package com.tomjun.permission.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.tomjun.permission.model.Menus;
import com.tomjun.permission.model.RoleInfo;
import com.tomjun.permission.model.RolePermission;
import com.tomjun.permission.model.UserRolePermissionInfo;

@Mapper
public interface RoleDao {
	/**
	 * 所有角色的用户以及相关的权限
	 * @param map
	 * @return
	 */
	List<UserRolePermissionInfo> getAllRole(Map<String, Object> map);
	/**
	 * 所有的角色的总量
	 * @param map
	 * @return
	 */
	int getRoleCount(Map<String, Object> map);
	/**
	 * 新增角色
	 * @param roleInfo
	 */
	void addRole(RoleInfo roleInfo);
	/**
	 * 为某个角色新增权限信息
	 * @param roleId
	 * @param permissions
	 */
	void addRolePermission(@Param("roleId") Integer roleId, @Param("permissions") List<Integer> permissions);
	/**
	 * 修改角色名字
	 * @param roleInfo
	 */
	void updateRole(RoleInfo roleInfo);
	/**
	 * 移除旧的权限
	 * @param roleId
	 * @param permissions
	 */
	void removeOldPermission(@Param("roleId") Integer roleId, @Param("permissions") List<Integer> permissions);
	
	/**
	 * 获取某个角色的所有权限信息
	 * @param roleId
	 * @return
	 */
	List<Integer> getRoleAllInfo(@Param("roleId") Integer roleId);
	
	/**
	 * 删除某角色
	 * @param roleId
	 */
	void deleteRoleById(int roleId);
	
	/**
	 * 移除某个角色的权限信息
	 * @param roleId
	 */
	void removeAllPermissionByRoleId(int roleId);
	/**
	 * 获取所有模块的权限信息
	 * @return
	 */
	List<Menus> getAllPermission();
	/**
	 * 查看是否存在相同名称的角色
	 * @param roleName
	 * @return
	 */
	List<RoleInfo> existRole(@Param("name") String roleName);

}
